Conversation
anarchivist
left a comment
There was a problem hiding this comment.
generally looks good, although i know there are some changes that are still incoming.
327e2c8 to
8602791
Compare
|
@anarchivist This should be good to go (or very close, in case my last rebase introduced some minor bug). There's quite a bit of complexity here around handling:
As for testing, I think we could improve the end-to-end testing here. Right now I just added a startup test, but obviously that's not enough (it notably doesn't run the necessary SQL migration). We'll want a basic smoke-test there, just to verify that the The difference between dev/app targets adds quite a bit of complexity to the build, but the more substantial issue is that the image being tested is not exactly the one that is pushed to the registry. Something to tackle in another PR? |
There was a problem hiding this comment.
Pull Request Overview
This PR updates the Docker build and release workflows to support multi-platform builds (ARM64 and x86_64) and improves the CI/CD pipeline structure. The changes introduce a new release workflow and significantly refactor the existing build workflow for better efficiency and platform support.
Key changes:
- Adds multi-platform Docker build support for ARM64 and x86_64 architectures
- Creates a new release workflow for tagging and publishing release images
- Restructures the build workflow to use matrix builds and separate test jobs
Reviewed Changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| docker-compose.yml | Fixes environment variable defaults in PostgreSQL configuration |
| docker-compose.ci.yml | Simplifies CI configuration by using env.example file |
| .github/workflows/release.yml | New workflow for retagging and pushing release images |
| .github/workflows/build.yml | Major refactor to support multi-platform builds and parallel testing |
Comments suppressed due to low confidence (1)
.github/workflows/build.yml:1
- This line sets a variable TEST_START but the syntax is incorrect for GitHub Actions environment variables. It should be
echo \"TEST_START=$(date +%s)\" >> $GITHUB_ENV.
name: Build / Test / Push
anarchivist
left a comment
There was a problem hiding this comment.
i like the way that this is heading. we will probably wan to get #73 in first; while this means refactoring this pr more, i think this eliminates some of the complexity we've had to add.
6cb2b5d to
9797e91
Compare
- Build multi-platform image (x64, arm64). - Speeds builds via architecture-specific registry cache. - Adds release workflow for re-tagging existing images by git-tag.
9797e91 to
36e98e3
Compare
Adds multi-platform build support. Borrows the approach pioneered in BerkeleyLibrary/avplayer to support fast multi-platform builds (without qemu):
Adds the standard release workflow. Applying a git-tag results in pulling the already built image for the underlying ref and retagging it accordingly. Semver-esque tags are broken out using the rules defined in docker/metadata-action, e.g.
v1.2.3results in the tagsv1.2.3,1.2.3,1.2, and1being applied and pushed.Adds test that the app image can start. It's a very basic test, but there is now a job that tests the image built to the app target can actually start. (This should be improved upon.)
Improves caching by using the registry backend. Switches from the GHA cache to a registry-based cache. The registry image is architecture-specific (
buildcache-ARCH). This cuts the image build time by >50% on cache hits.